#include "util.hpp"
#include <unistd.h>
#include "message.hpp"
#include "format.hpp"
#include "sink.hpp"
#include "logger.hpp"
#include "buffer.hpp"
int main()
{
    // string logger_name = "SYNLOGGER";
    // LOG::LogLevel::value limit = LOG::LogLevel::value::WARN;
    // LOG::Formatter::ptr fmt = make_shared<LOG::Formatter>();
    // // LOG::LogMsg msg(LOG::LogLevel::value::DEBUG, 53, "Main.c", "root", "日志测试...");
    // // LOG::Formatter s;
    // // string ss = s.format(msg);
    // shared_ptr<LOG::SinkLog> std_out = LOG::SinkFactory::Create<LOG::StdoutSink>();
    // shared_ptr<LOG::SinkLog> file_out = LOG::SinkFactory::Create<LOG::FileSink>("./1/213/test.log");
    // // std_out->log(ss.c_str(), ss.size());
    // // file_out->log(ss.c_str(), ss.size());
    // //shared_ptr<LOG::SinkLog> time_out = LOG::SinkFactory::Create<LOG::RollBytimeSink>("./1/213/test.log", 1);
    // vector<LOG::SinkLog::ptr> sinks = {std_out, file_out};
    // LOG::Logger::ptr loggerptr(make_shared<LOG::SynLogger> (logger_name,limit,fmt,sinks));

    // // loggerptr->DEBUG(__LINE__,__FILE__,"%s","测试日志");

    // loggerptr->INFO(__LINE__,__FILE__,"%s","测试日志");

    // loggerptr->WARN(__LINE__,__FILE__,"%s","测试日志");
    // loggerptr->ERROR(__LINE__,__FILE__,"%s","测试日志");
    // loggerptr->FATAL(__LINE__,__FILE__,"%s","测试日志");

    // //有了建造着模式的测试
    // shared_ptr<LOG::LoggerBulider> _logger = make_shared<LOG::LocalLoggerBulider>();
    // _logger->setLoggerName("测试日志器");
    // _logger->setLoggerLevel(LOG::LogLevel::value::DEBUG);
    // _logger->setLoggerType(LOG::LoggerType::AYNS_LOGGER);
    // _logger->setLoggerSinks<LOG::FileSink>("./1/213/asyc.log");
    // LOG::Logger::ptr _ptr = _logger->build();

    // //_ptr->INFO(__LINE__,__FILE__,"%s","测试日志");

    // for(int i = 0 ;i<1024;i++)
    // {
    //     _ptr->INFO(__LINE__, __FILE__, "%s", "测试日志1");
    //     _ptr->ERROR(__LINE__, __FILE__, "%s", "测试日志2");
    //     // _ptr->WARN(__LINE__, __FILE__, "%s", "测试日志3");
    //     // _ptr->FATAL(__LINE__, __FILE__, "%s", "测试日志4");
    //     // _ptr->FATAL(__LINE__, __FILE__, "%s", "测试日志5");
    // }

    // ifstream ss;
    // ss.open("./1/213/test.log",ios::binary );
    // ss.seekg(0,ios::end);//跳转到文件结尾
    // size_t logsize =ss.tellg();
    // ss.seekg(0,ios::beg);
    // string bady;
    // bady.resize(logsize);
    // ss.read(&bady[0],logsize);
    // LOG::Buffer _buffer;
    // for(int i = 0 ;i <bady.size();i++)
    // {
    //     _buffer.push(&bady[i],1);
    // }
    // ofstream of("./1/213/2.log",ios::binary);
    // cout<<_buffer._writer_size<<endl;
    // of.write(_buffer.begin(),_buffer.readeAbleSize());
}
